Design Pattern [Design Pattern] 생성(Creational) 패턴 동기화(synchronized)를 사용해 멀티쓰레드 환경에서 안전하게 만드는 방법 클래스 로딩 시점에 static field 가 초기화 되므로 객체 생성비용이 클 경우 단점이 될 수 있다. 다양한 구현체 (Product)가 있고, 그중에서 특정한 구현체를 만들 수 있는 다양한 팩토리 (Creator)를 제공할 수 있다. 객체를 생성하는 역할을 하나의 팩토리 클래스가 전담하게 하는 방법. 구체... Design PatternDesign Pattern [Design Pattern] 행위(Behavioral) 패턴 클라이언트 코드를 변경하지 않고 새로운 핸들러를 체인에 추가할 수 있다. 기존 코드를 변경하지 않고 새로운 커맨드를 만들 수 있다. 기존 코드를 변경하지 않고 새로운 Expression 을 추가할 수 있다. 집합 객체를 순회하는 클라이언트 코드를 변경하지 않고 다양한 순회 방법을 제공할 수 있다. 여러 컴포넌트간의 결합도를 중재자를 통해 낮출 수 있다. 컴포넌트 코드를 변경하지 않고 새로운 ... Design PatternDesign Pattern [Java]기본6~15강 까지의 내용 정리 클래스 메소드 사용 방법 메소드 실행 순서 over(넘치다)+load(저장하다)로, 메소드의 이름이 같으면서 매개변수의 자료형,갯수, 순서 중 하나 이상이 다른 경우 동일한 메소드 명으로 실행 가능 생성자 클래스 명과 같다 객체가 생성될 때 가장 먼저 실행 생성자 오버로딩 생성자의 이름이 같으면서 매개변수의 자료형, 갯수, 순서 중 하나 이상이 다른 경우, 메소드 오버로딩과 동일 import... Design PatternSingletonarraymethodJavaDesign Pattern 03. Decorator Pattern 객체에 추가적인 책임을 동적으로 부여 상속을 사용하지 않아도 유연하고 융통성 있는 기능 확장을 가능하게 함 Component: 각 구성 요소는 직접 쓰일 수도 있고 데코레이터로 감싸져서 쓰일 수도 있음 (class or interface) ConcreteComponent: 새로운 행동을 동적으로 추가 Decorator: 자신이 장식할 구성요소와 같은 인터페이스 or 추상 클래스 Concret... Design PatternJavaDesign Pattern 07. Command Pattern 요구사항(요청, 명령)을 객체로 캡슐화 시킨다. 다른 요구사항을 지닌 클라이언트를 매개변수화 시킬 수 있고, 요구사항을 큐에 넣거나 로그로 남길 수 있으며 작업 취소 기능을 지원할 수도 있다. 행동과 리시버를 한 객체에 집어넣고, execute()라는 메소드 하나만 외부에 공개한다. Problem 사용하려는 객체가 많고, API가 서로 다른 경우 번거로움이 존재한다. Solution Comm... Design PatternJavaDesign Pattern [Design Pattern] Decorator 특정 클래스의 객체들이 할 수 있는 일들을 여러가지 두고, 각 객체마다 사용자가 원하는대로 골라 시키거나 기능들을 필요에 따라 장착하게 할 때 사용 (참고: ) 해당 알림 클래스는 중요한 이벤트가 발생할 때마다 사용자에게 알림을 보내는 역할을 한다. 하지만 나중에 facebook이나 slack 같은 어플리케이션에 알림을 보내려고 하면, 추가로 다른 알림 클래스를 생성하여, 기존 클래스를 상속... KDT과제Design PatternDesign Pattern 09. Template Method Pattern 알고리즘의 뼈대를 정의하고 일부를 서브 클래스로 위임한다. 알고리즘 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의 할 수 있도록 한다. Problem 알고리즘들을 캡슐화시키면서 중복되는 코드가 여러 클래스에 존재 ex) 커피 만드는 법 (물을 끓인다. 끓는 물에 커피를 우려낸다.) , 차 만드는 법(물을 끓인다. 끓는 물에 차를 우려낸다.) Solution 알고리즘의 중... JavaDesign PatternDesign Pattern [Design Pattern] 옵저버 패턴(Observer) 📌 상태가 변경되면 그 상태 변경에 따라 반응하는 구조를 구현하기 위한 패턴 observing할 메소드를 담고 있는(?) 추상클래스를 정의한다. 추상클래스를 상속받는 구체적인 구현클래스를 생성한다. play를 하면서 데이터 변경을 통보한다. 🙌 클래스나 객체에 의존하지 않고 데이터 변경을 통보할 수 있다.... Design PatternDesign Pattern [Design Pattern] - 데코레이터 패턴 따라서 모든 서브클래스에서 음료의 가격을 리턴하는 cost() 메소드를 구현해야한다. 커피를 주문할 때 스팀 우유, 두유, 모카(초코), 휘핑과 같은 토핑을 변경할 수 있는데 이런 경우 2️⃣ 모카 토핑을 주문했으니 Mocha 객체를 만들고 그 객체로 Espresso를 감싼다. Mocha에도 cost() 메소드가 있고, 다형성을 통해 Mocha가 감싸고 있는 Espresso도 Beverage... Java데코레이터 패턴decorator patternDesign Pattern디자인 패턴Design Pattern Telescoping Constructor Pattern이 뭐야 [모두가 기술 면접에 합격하는 그날까지] 보통 빌더 패턴(Builder Pattern)을 설명할 때 비교 대상으로 자주 등장하는 디자인 패턴이다. 비교당할 때 빌더 패턴이 우수하다는 의미로 비교당하는데 각각의 장단점이 있어 자바의 API에서 많이 찾아볼 수 있는 디자인 패턴 중의 하나이다. 점층적 생성자 패턴(Telescoping Constructor Pattern)은 필수 매개변수를 가지는... 점층적 생성자 패턴Telescoping Constructor PatternDesign PatternDesign Pattern
[Design Pattern] 생성(Creational) 패턴 동기화(synchronized)를 사용해 멀티쓰레드 환경에서 안전하게 만드는 방법 클래스 로딩 시점에 static field 가 초기화 되므로 객체 생성비용이 클 경우 단점이 될 수 있다. 다양한 구현체 (Product)가 있고, 그중에서 특정한 구현체를 만들 수 있는 다양한 팩토리 (Creator)를 제공할 수 있다. 객체를 생성하는 역할을 하나의 팩토리 클래스가 전담하게 하는 방법. 구체... Design PatternDesign Pattern [Design Pattern] 행위(Behavioral) 패턴 클라이언트 코드를 변경하지 않고 새로운 핸들러를 체인에 추가할 수 있다. 기존 코드를 변경하지 않고 새로운 커맨드를 만들 수 있다. 기존 코드를 변경하지 않고 새로운 Expression 을 추가할 수 있다. 집합 객체를 순회하는 클라이언트 코드를 변경하지 않고 다양한 순회 방법을 제공할 수 있다. 여러 컴포넌트간의 결합도를 중재자를 통해 낮출 수 있다. 컴포넌트 코드를 변경하지 않고 새로운 ... Design PatternDesign Pattern [Java]기본6~15강 까지의 내용 정리 클래스 메소드 사용 방법 메소드 실행 순서 over(넘치다)+load(저장하다)로, 메소드의 이름이 같으면서 매개변수의 자료형,갯수, 순서 중 하나 이상이 다른 경우 동일한 메소드 명으로 실행 가능 생성자 클래스 명과 같다 객체가 생성될 때 가장 먼저 실행 생성자 오버로딩 생성자의 이름이 같으면서 매개변수의 자료형, 갯수, 순서 중 하나 이상이 다른 경우, 메소드 오버로딩과 동일 import... Design PatternSingletonarraymethodJavaDesign Pattern 03. Decorator Pattern 객체에 추가적인 책임을 동적으로 부여 상속을 사용하지 않아도 유연하고 융통성 있는 기능 확장을 가능하게 함 Component: 각 구성 요소는 직접 쓰일 수도 있고 데코레이터로 감싸져서 쓰일 수도 있음 (class or interface) ConcreteComponent: 새로운 행동을 동적으로 추가 Decorator: 자신이 장식할 구성요소와 같은 인터페이스 or 추상 클래스 Concret... Design PatternJavaDesign Pattern 07. Command Pattern 요구사항(요청, 명령)을 객체로 캡슐화 시킨다. 다른 요구사항을 지닌 클라이언트를 매개변수화 시킬 수 있고, 요구사항을 큐에 넣거나 로그로 남길 수 있으며 작업 취소 기능을 지원할 수도 있다. 행동과 리시버를 한 객체에 집어넣고, execute()라는 메소드 하나만 외부에 공개한다. Problem 사용하려는 객체가 많고, API가 서로 다른 경우 번거로움이 존재한다. Solution Comm... Design PatternJavaDesign Pattern [Design Pattern] Decorator 특정 클래스의 객체들이 할 수 있는 일들을 여러가지 두고, 각 객체마다 사용자가 원하는대로 골라 시키거나 기능들을 필요에 따라 장착하게 할 때 사용 (참고: ) 해당 알림 클래스는 중요한 이벤트가 발생할 때마다 사용자에게 알림을 보내는 역할을 한다. 하지만 나중에 facebook이나 slack 같은 어플리케이션에 알림을 보내려고 하면, 추가로 다른 알림 클래스를 생성하여, 기존 클래스를 상속... KDT과제Design PatternDesign Pattern 09. Template Method Pattern 알고리즘의 뼈대를 정의하고 일부를 서브 클래스로 위임한다. 알고리즘 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의 할 수 있도록 한다. Problem 알고리즘들을 캡슐화시키면서 중복되는 코드가 여러 클래스에 존재 ex) 커피 만드는 법 (물을 끓인다. 끓는 물에 커피를 우려낸다.) , 차 만드는 법(물을 끓인다. 끓는 물에 차를 우려낸다.) Solution 알고리즘의 중... JavaDesign PatternDesign Pattern [Design Pattern] 옵저버 패턴(Observer) 📌 상태가 변경되면 그 상태 변경에 따라 반응하는 구조를 구현하기 위한 패턴 observing할 메소드를 담고 있는(?) 추상클래스를 정의한다. 추상클래스를 상속받는 구체적인 구현클래스를 생성한다. play를 하면서 데이터 변경을 통보한다. 🙌 클래스나 객체에 의존하지 않고 데이터 변경을 통보할 수 있다.... Design PatternDesign Pattern [Design Pattern] - 데코레이터 패턴 따라서 모든 서브클래스에서 음료의 가격을 리턴하는 cost() 메소드를 구현해야한다. 커피를 주문할 때 스팀 우유, 두유, 모카(초코), 휘핑과 같은 토핑을 변경할 수 있는데 이런 경우 2️⃣ 모카 토핑을 주문했으니 Mocha 객체를 만들고 그 객체로 Espresso를 감싼다. Mocha에도 cost() 메소드가 있고, 다형성을 통해 Mocha가 감싸고 있는 Espresso도 Beverage... Java데코레이터 패턴decorator patternDesign Pattern디자인 패턴Design Pattern Telescoping Constructor Pattern이 뭐야 [모두가 기술 면접에 합격하는 그날까지] 보통 빌더 패턴(Builder Pattern)을 설명할 때 비교 대상으로 자주 등장하는 디자인 패턴이다. 비교당할 때 빌더 패턴이 우수하다는 의미로 비교당하는데 각각의 장단점이 있어 자바의 API에서 많이 찾아볼 수 있는 디자인 패턴 중의 하나이다. 점층적 생성자 패턴(Telescoping Constructor Pattern)은 필수 매개변수를 가지는... 점층적 생성자 패턴Telescoping Constructor PatternDesign PatternDesign Pattern